home *** CD-ROM | disk | FTP | other *** search
- {
- > This leads me to a question that I've often wondered about, but never
- > Really bothered to ask anyone: why use a delimiter (commonly '/' or '-')
- > preceeding the parameter option?
-
- How would you parse the following command tail:
-
- COPY XYZZY.PAS V:\/S/P/O
-
- if it was entered as
-
- COPY XYZZY.PAS V:\SPO
-
- The delimiter is there to - yes - delimit the parameter from the Text preceding
- it.
-
- (and BTW: All the code examples shown here won't take care of this problem,
- since they don't allow imbedded parameters. Try this one instead:)
- }
-
- Function CAPS(S : String) : String; Assembler;
- Asm
- PUSH DS
- LDS SI,S
- LES DI,@Result
- CLD
- LODSB
- STOSB
- xor CH,CH
- MOV CL,AL
- JCXZ @OUT
- @LOOP: LODSB
- CMP AL,'a'
- JB @NEXT
- CMP AL,'z'
- JA @NEXT
- SUB AL,20h
- @NEXT: STOSB
- LOOP @LOOP
- @OUT: POP DS
- end;
-
- Function Switch(C : Char) : Boolean;
- Var
- CommandTail : ^String;
- P : Word;
-
- begin
- CommandTail := PTR(PrefixSeg, $0080);
- P := POS('/' + UpCase(C), CAPS(CommandTail^));
- if P = 0 then
- Switch := False
- ELSE
- begin
- Switch := True;
- DELETE(CommandTail^, P, 2)
- end
- end;
-
- {
- The CAPS routine only converts the 'a' to 'z' range (I have one in my library
- that converts all international Characters, but this was a simple one I could
- Type in without looking in my library).
-
- The Switch Function also has the added benefit that it strips off the switch
- from the command line after having tested For it. This way, you should Program
- your Programs in the following way:
-
- [...]
- }
- begin
- GetSwitchs;
- CopyFile(ParamStr(1),ParamStr(2))
- end.
-
- {
- and the switches can then be at ANY place on the command line, and the Program
- will still Function correctly.
- }